package com.itheima.anno;


import com.itheima.validation.StateValidation;
import jakarta.validation.Constraint;
import jakarta.validation.Payload;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

// 定义一个文档化的注解，用于描述状态参数的校验规则
@Documented// 表示文档中包含该注解
@Target({FIELD})// 限定该注解只能应用于字段
@Retention(RUNTIME)// 在运行时保留该注解信息，以便于反射机制可以访问
@Constraint(validatedBy ={StateValidation.class})// 指定该注解使用的校验器
public @interface State {
    // 提供校验失败的提示信息
    String message() default "state参数的值只能是已发布或者草稿";

    // 指定分组，用于在不同场景下应用不同的校验规则
    Class<?>[] groups() default {};

    // 负载，用于携带额外的校验信息或元数据
    Class<? extends Payload>[] payload() default {};
}

